//
//  ArticoloDVController.m
//  iTeVe
//
//  Created by Pedro Gonzalez on 28/02/14.
//  Copyright (c) 2014 SISI Software. All rights reserved.
//

#import "ArticoloDVController.h"

@interface ArticoloDVController ()<UITextViewDelegate, UITextFieldDelegate, BSKeyboardControlsDelegate>

@property (nonatomic, strong) BSKeyboardControls *keyboardControls;

@end

@implementation ArticoloDVController{
    
    UIPopoverController *sceltaAliquotaPopover, *sceltaListiniPopover;
}


@synthesize btnAnnulla;
@synthesize btnConferma;



@synthesize modelArticolo;

@synthesize lblCodice, lblDescrizione, btnAliquota, lblCosto, lblUnitaMisura;
@synthesize tfCodice, tfDescrizione, tfAliquota, tfDescrizioneAliquota, tfCosto, tfUnitaMisura;

@synthesize activeField;

@synthesize nuovo;


- (id)initWithStyle:(UITableViewStyle)style
{
    self = [super initWithStyle:style];
    if (self) {
        // Custom initialization
    }
    return self;
}

- (void)viewDidLoad
{
    [super viewDidLoad];
    
    nuovo = [modelArticolo.nuovo boolValue];
    if (nuovo){
        
    } else {
        tfCodice.enabled = NO;
    }
    
    
    tfCodice.delegate = self;
    tfDescrizione.delegate = self;
    tfAliquota.delegate = self;
    tfCosto.delegate = self;
    tfUnitaMisura.delegate = self;

    tfCodice.text = modelArticolo.codart;
    tfDescrizione.text = modelArticolo.descrizione;
    tfAliquota.text = modelArticolo.codali;
    
    if (modelArticolo.codali.length>0)
    {
        FMDBDataAccess *db = [[FMDBDataAccess alloc] init];
        Aliquota *aliquota = [[Aliquota alloc] init];
        aliquota = [db getAliquotaxCodice:modelArticolo.codali];
        [self visualizzoDescrizioneAliquota:aliquota];
    }
    
    tfUnitaMisura.text = modelArticolo.unmisura;
    
    
    NSNumberFormatter *numberFormatter = [[NSNumberFormatter alloc] init];
    [numberFormatter setNumberStyle:NSNumberFormatterDecimalStyle];
    [numberFormatter setNegativeFormat:@"(0.00)"];
    [numberFormatter setPositiveFormat:@"0.00"];

//    tfCosto.text = [NSString localizedStringWithFormat:@"%@", modelArticolo.costo, nil];
    tfCosto.text = [numberFormatter stringFromNumber:modelArticolo.costo];
    
    // controllo tastiera next/previous
    NSArray *fields = @[ tfCosto, tfDescrizione, tfAliquota, tfCosto, tfUnitaMisura];
    
    [self setKeyboardControls:[[BSKeyboardControls alloc] initWithFields:fields]];
    [self.keyboardControls setDelegate:self];
    
    btnAnnulla.title = NSLocalizedString(@"TESTO_ANNULLA", @"Annulla...");
    btnConferma.title = NSLocalizedString(@"TESTO_CONFERMA", @"Conferma...");
//    self.navigationController.navigationBar.topItem.backBarButtonItem.title = NSLocalizedString(@"TESTO_ANNULLA", @"Annulla...");
//    self.navigationController.navigationBar.topItem.rightBarButtonItem.title = NSLocalizedString(@"TESTO_CONFERMA", @"Conferma...");
   

    self.lblCosto.text = NSLocalizedString(@"ARTICOLI_LABEL_CODICE", nil);
    self.lblDescrizione.text = NSLocalizedString(@"ARTICOLI_LABEL_DESCRIZIONE", nil);
    
    self.btnAliquota.titleLabel.text = NSLocalizedString(@"ARTICOLI_LABEL_ALIQUOTA", nil);
    
    self.lblCosto.text = NSLocalizedString(@"ARTICOLI_LABEL_COSTO", nil);
    self.lblUnitaMisura.text = NSLocalizedString(@"ARTICOLI_LABEL_UNITA_MISURA", nil);
    
    
}

- (void)didReceiveMemoryWarning
{
    [super didReceiveMemoryWarning];
    
}

- (void)keyboardControlsDonePressed:(BSKeyboardControls *)keyboardControls
{
    [keyboardControls.activeField resignFirstResponder];
}

- (void)keyboardControls:(BSKeyboardControls *)keyboardControls selectedField:(UIView *)field inDirection:(BSKeyboardControlsDirection)direction
{
    UIView *view = keyboardControls.activeField.superview.superview;
    [self.tableView scrollRectToVisible:view.frame animated:YES];
}


- (void)textFieldDidBeginEditing:(UITextField *)textField
{
    [self.keyboardControls setActiveField:textField];
}

- (void)textViewDidBeginEditing:(UITextView *)textView
{
    [self.keyboardControls setActiveField:textView];
}


- (IBAction)cancel:(id)sender
{
    [self.delegate articoloDVControllerDidCancel:self];
}


- (IBAction)done:(id)sender
{
    
    // controlli
    if (tfCodice.text.length==0){
        NSString *msg = @"Il Codice Articolo non deve essere vuoto...";
        UIAlertView *alert = [[UIAlertView alloc] initWithTitle:@"Informazione"
                                                        message:msg
                                                       delegate:nil
                                              cancelButtonTitle:@"OK"
                                              otherButtonTitles:nil];
        [alert show];
        return;
    }
    
    Articolo *articolo = [[Articolo alloc] init];
    articolo.id = modelArticolo.id;
    articolo.codart = tfCodice.text;
    articolo.descrizione = tfDescrizione.text;
    articolo.codali = tfAliquota.text;
    articolo.unmisura = tfUnitaMisura.text;
    
    NSNumberFormatter * f = [[NSNumberFormatter alloc] init];
    [f setNumberStyle:NSNumberFormatterDecimalStyle];
    [f setLenient:YES];
    
    NSNumber *costo = [f numberFromString:tfCosto.text];

    articolo.costo = costo;
    
    if (nuovo){
        [self.delegate articoloDVController:self didAddArticolo:articolo];
    } else {
        [self.delegate articoloDVController:self didEditArticolo:articolo];
    }
    
    
}



- (BOOL)textField:(UITextField *)textField shouldChangeCharactersInRange:(NSRange)range replacementString:(NSString *)string
{
    if (textField == self.tfCosto ) {
        
        NSString *newString = [textField.text stringByReplacingCharactersInRange:range withString:string];
        
        NSLocale* locale = [NSLocale currentLocale];
        NSString *separatore = [locale objectForKey: NSLocaleDecimalSeparator];
        
        NSString *expression = [NSString stringWithFormat:@"%@%@%@", @"^([0-9]+)?(\\", separatore, @"([0-9]{1,2})?)?$"];
        
        NSRegularExpression *regex = [NSRegularExpression regularExpressionWithPattern:expression
                                                                               options:NSRegularExpressionCaseInsensitive
                                                                                 error:nil];
        NSUInteger numberOfMatches = [regex numberOfMatchesInString:newString
                                                            options:0
                                                              range:NSMakeRange(0, [newString length])];
        if (numberOfMatches == 0)
            return NO;
    } else if (textField == self.tfCodice || textField == self.tfAliquota) {
        
        textField.text = [textField.text uppercaseString];
        
    }
    
    return YES;
}



-(void)prepareForSegue:(UIStoryboardPopoverSegue *)segue sender:(id)sender{
    
    if([segue.identifier isEqualToString:@"sceltaAliquotaSegue"] ){
        sceltaAliquotaPopover = [(UIStoryboardPopoverSegue *)segue popoverController];
        sceltaAliquotaPopover.delegate = (id <UIPopoverControllerDelegate>)self;
        AliquoteVC *controller = (AliquoteVC *)segue.destinationViewController;
        controller.delegate = self;
//        controller.isScelgo = YES;
    }
    else if ([segue.identifier isEqualToString:@"segueListiniVendita"]) {
        /*
        sceltaListiniPopover = [(UIStoryboardPopoverSegue *)segue popoverController];
        sceltaListiniPopover.delegate = (id <UIPopoverControllerDelegate>)self;
        ListiniArticoloVC *controllerLisArtVC = (ListiniArticoloVC *)segue.destinationViewController;
        controllerLisArtVC.modelArticolo = modelArticolo;
        controllerLisArtVC.delegate = self;
         */
        
        ListiniArticoloVC *destViewController = (ListiniArticoloVC *)segue.destinationViewController;
        destViewController.modelArticolo = modelArticolo;
        destViewController.delegate = self;

    }

}

- (BOOL)shouldPerformSegueWithIdentifier:(NSString *)identifier sender:(id)sender {
    if (sceltaAliquotaPopover){
        [sceltaAliquotaPopover dismissPopoverAnimated:YES];
        sceltaAliquotaPopover = nil;
        return NO;
    } else {
        return YES;
    }
}



- (void)selectItemViewController:(AliquoteVC *)controller didFinishEnteringItem:(Aliquota *)aliquota
{
    
    tfAliquota.text = aliquota.codali;
    [self visualizzoDescrizioneAliquota:aliquota];
    
    [sceltaAliquotaPopover dismissPopoverAnimated:YES];
    sceltaAliquotaPopover = nil;
    
}

- (void)selectItemViewController2:(ListiniArticoloVC *)controller didFinishEnteringItem:(ListinoArticolo *)listinoArticolo
{
    
//    tfAliquota.text = aliquota.codali;
//    [self visualizzoDescrizioneAliquota:aliquota];
    
    [sceltaListiniPopover dismissPopoverAnimated:YES];
    sceltaListiniPopover = nil;
    
}


- (void) visualizzoDescrizioneAliquota:(Aliquota *)aliquota
{
    tfDescrizioneAliquota.text = [NSString stringWithFormat:@"%@ - %@%@", aliquota.descrizione, aliquota.percentuale, @"%"];
}


@end
